// components/lyric/lyric.js
let lyricHeight = 0
Component({
  /**
   * 组件的属性列表
   */
  properties: {
    isLyricShow: {
      type: Boolean,
      value: false
    },
    lyric: String
  },

  observers: {
    lyric(lrc){
      if(lrc == '暂无歌词'){
        this.setData({
          lrcList: [{
            lrc,
            time: 0
          }],
          nowLyricIndex: -1
        })
      }else {
        this._parseLyric(lrc)
      }
    }
  },

  /**
   * 组件的初始数据
   */
  data: {
    lrcList: [],
    nowLyricIndex: 0,
    scrollTop: 0
  },
  
  // 生命周期函数
  lifetimes: {
    ready(){
      // 宽度 750rpx
      wx.getSystemInfo({
        success(res){
          lyricHeight = res.screenWidth / 750 * 64
        }
      })
    }
  },

  /**
   * 组件的方法列表
   */
  methods: {
    updata(currentTime){
      let lrcList = this.data.lrcList
      if (lrcList.length == 0) return
      if(currentTime > lrcList[lrcList.length - 1].time){
        if(this.data.nowLyricIndex != -1){
          this.setData({
            nowLyricIndex: -1,
            scrollTop: lrcList.length * lyricHeight 
          })
        }
      }
      for(let i=0, len = lrcList.length; i< len; i++) {
        if(currentTime <= lrcList[i].time){
          this.setData({
            nowLyricIndex: i -1,
            scrollTop: (i -1) * lyricHeight
          })
          break
        }
      }
    },
    _parseLyric(sLyric){
      let line = sLyric.split('\n')
      let _lrcList = []
      line.forEach(element => {
        let time = element.match(/\[(\d{2,}):(\d{2})(?:\.(\d{2,3}))?]/g)
        if(time != null){
          let lrc = element.split(time)[1]
          let timeRge = time[0].match(/(\d{2,}):(\d{2})(?:\.(\d{2,3}))?/)
          let time2Seconds = parseInt(timeRge[1]) * 60 + parseInt(timeRge[2]) + parseInt(timeRge[2]) / 1000
          _lrcList.push({
            lrc,
            time: time2Seconds
          })
        }
      });
      this.setData({
        lrcList :_lrcList
      })
    }
  }
}) 
